You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

25 lines
874 B

import log4js from "logger";
import { oauthManager } from '#server/service/oauth/oauth-manager';
import { createAuthContext } from '#server/service/auth/context';
const logger = log4js.getLogger("OAUTH");
export default defineWrappedResponseHandler(async (event) => {
const { getCurrent } = createAuthContext(event);
const user = await getCurrent();
const providerName = getRouterParam(event, 'provider');
if (!providerName) {
logger.warn(`[authorize] Missing provider param`);
throw createError({
statusCode: 400,
statusMessage: 'Provider is required',
});
}
const userId = user?.id;
logger.info(`[authorize] Generating auth URL: provider=${providerName}, userId=${userId ?? 'anonymous'}, isBinding=${!!userId}`);
const authUrl = oauthManager.getAuthorizationUrl(providerName, userId);
return sendRedirect(event, authUrl);
});